[INFO] fetching crate penumbra-sdk-tct-visualize 0.82.0-alpha.0...
[INFO] fixing penumbra-sdk-tct-visualize-0.82.0-alpha.0 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate penumbra-sdk-tct-visualize 0.82.0-alpha.0 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate penumbra-sdk-tct-visualize 0.82.0-alpha.0
[INFO] finished tweaking crates.io crate penumbra-sdk-tct-visualize 0.82.0-alpha.0
[INFO] tweaked toml for crates.io crate penumbra-sdk-tct-visualize 0.82.0-alpha.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate penumbra-sdk-tct-visualize 0.82.0-alpha.0 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate penumbra-sdk-tct-visualize 0.82.0-alpha.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3
[INFO] running `Command { std: "docker" "start" "355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling libc v0.2.168
[INFO] [stderr]    Compiling autocfg v1.3.0
[INFO] [stderr]    Compiling serde v1.0.203
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking log v0.4.22
[INFO] [stderr]    Compiling anyhow v1.0.86
[INFO] [stderr]     Checking futures-core v0.3.30
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]     Checking tracing-core v0.1.32
[INFO] [stderr]     Checking futures-sink v0.3.30
[INFO] [stderr]     Checking futures-io v0.3.30
[INFO] [stderr]     Checking futures-task v0.3.30
[INFO] [stderr]    Compiling either v1.13.0
[INFO] [stderr]     Checking cpufeatures v0.2.12
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking zerocopy v0.7.34
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]    Compiling serde_json v1.0.118
[INFO] [stderr]    Compiling time-core v0.1.2
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking futures-channel v0.3.30
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]    Compiling time-macros v0.2.18
[INFO] [stderr]     Checking flex-error v0.4.4
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]    Compiling safe-proc-macro2 v1.0.67
[INFO] [stderr]     Checking arrayvec v0.7.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking subtle-ng v2.5.0
[INFO] [stderr]     Checking tracing-subscriber v0.2.25
[INFO] [stderr]     Checking sha2 v0.10.8
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]     Checking hashbrown v0.13.2
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]     Checking ed25519 v2.2.3
[INFO] [stderr]    Compiling syn v2.0.90
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling jobserver v0.1.31
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking socket2 v0.5.7
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling cc v1.2.2
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling crunchy v0.2.2
[INFO] [stderr]     Checking sha3 v0.10.8
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling safe-quote v1.0.15
[INFO] [stderr]     Checking ripemd v0.1.3
[INFO] [stderr]    Compiling httparse v1.9.4
[INFO] [stderr]     Checking allocator-api2 v0.2.18
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling bytes v1.9.0
[INFO] [stderr]    Compiling safe-regex-compiler v0.2.6
[INFO] [stderr]     Checking uint v0.9.5
[INFO] [stderr]    Compiling prettyplease v0.2.20
[INFO] [stderr]    Compiling linux-raw-sys v0.4.14
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling bitflags v2.6.0
[INFO] [stderr]    Compiling regex-syntax v0.8.4
[INFO] [stderr]    Compiling fastrand v2.1.0
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling aws-lc-rs v1.10.0
[INFO] [stderr]    Compiling petgraph v0.6.5
[INFO] [stderr]    Compiling cmake v0.1.52
[INFO] [stderr]     Checking fixed-hash v0.8.0
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling multimap v0.10.0
[INFO] [stderr]     Checking unicode-xid v0.1.0
[INFO] [stderr]     Checking mirai-annotations v1.12.0
[INFO] [stderr]     Checking proc-macro2 v0.1.10
[INFO] [stderr]    Compiling rle-decode-fast v1.0.3
[INFO] [stderr]    Compiling safe-regex-macro v0.2.6
[INFO] [stderr]     Checking rustls-pki-types v1.10.0
[INFO] [stderr]    Compiling libflate_lz77 v1.2.0
[INFO] [stderr]     Checking ark-std v0.4.0
[INFO] [stderr]     Checking safe-regex v0.2.6
[INFO] [stderr]     Checking constant_time_eq v0.1.5
[INFO] [stderr]    Compiling adler32 v1.2.0
[INFO] [stderr]     Checking arrayvec v0.5.2
[INFO] [stderr]    Compiling rustls v0.23.20
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking chrono v0.4.38
[INFO] [stderr]    Compiling libflate v1.4.0
[INFO] [stderr]     Checking wait-timeout v0.2.0
[INFO] [stderr]    Compiling penumbra-sdk-proto v0.82.0-alpha.0
[INFO] [stderr]     Checking blake2b_simd v1.0.2
[INFO] [stderr]     Checking bitmaps v2.1.0
[INFO] [stderr]     Checking blake2b_simd v0.5.11
[INFO] [stderr]    Compiling im v15.1.0
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking rand_xoshiro v0.6.0
[INFO] [stderr]     Checking rand_xorshift v0.3.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking encoding_rs v0.8.34
[INFO] [stderr]     Checking os_str_bytes v6.6.1
[INFO] [stderr]    Compiling blake3 v1.5.1
[INFO] [stderr]    Compiling aws-lc-sys v0.22.0
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking regex-automata v0.4.7
[INFO] [stderr]     Checking bech32 v0.8.1
[INFO] [stderr]     Checking clap_lex v0.2.4
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking sized-chunks v0.6.5
[INFO] [stderr]     Checking thread_local v1.1.8
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]    Compiling penumbra-sdk-tct-visualize v0.82.0-alpha.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating build.rs from 2021 edition to 2024
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking hash_hasher v2.0.3
[INFO] [stderr]     Checking textwrap v0.16.1
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]    Compiling tempfile v3.10.1
[INFO] [stderr]     Checking regex v1.10.5
[INFO] [stderr]     Checking rusty-fork v0.3.0
[INFO] [stderr]    Compiling ark-serialize-derive v0.4.2
[INFO] [stderr]    Compiling ark-ff-asm v0.4.2
[INFO] [stderr]    Compiling ark-ff-macros v0.4.2
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling include-flate-codegen v0.1.4
[INFO] [stderr]     Checking proptest v1.6.0
[INFO] [stderr]    Compiling clap_derive v3.2.25
[INFO] [stderr]     Checking ark-serialize v0.4.2
[INFO] [stderr]     Checking include-flate-codegen-exports v0.1.4
[INFO] [stderr]     Checking include-flate v0.1.4
[INFO] [stderr]     Checking clap v3.2.25
[INFO] [stderr]    Compiling serde_derive v1.0.203
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling futures-macro v0.3.30
[INFO] [stderr]    Compiling prost-derive v0.13.4
[INFO] [stderr]    Compiling tokio-macros v2.4.0
[INFO] [stderr]    Compiling serde_repr v0.1.19
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling derive_more v0.99.18
[INFO] [stderr]    Compiling async-trait v0.1.80
[INFO] [stderr]    Compiling pin-project-internal v1.1.5
[INFO] [stderr]     Checking ark-ff v0.4.2
[INFO] [stderr]     Checking subtle-encoding v0.5.1
[INFO] [stderr]     Checking curve25519-dalek-ng v4.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.61
[INFO] [stderr]    Compiling async-stream-impl v0.3.5
[INFO] [stderr]    Compiling proptest-derive v0.5.1
[INFO] [stderr]     Checking async-stream v0.3.5
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking ed25519-consensus v2.1.0
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking thiserror v1.0.61
[INFO] [stderr]     Checking pin-project v1.1.5
[INFO] [stderr]     Checking tracing-subscriber v0.3.18
[INFO] [stderr]    Compiling prost v0.13.4
[INFO] [stderr]    Compiling prost-types v0.13.4
[INFO] [stderr]    Compiling prost-build v0.13.4
[INFO] [stderr]    Compiling pbjson-build v0.7.0
[INFO] [stderr]     Checking futures-executor v0.3.30
[INFO] [stderr]    Compiling pbjson-types v0.7.0
[INFO] [stderr]     Checking futures v0.3.30
[INFO] [stderr]     Checking serde_bytes v0.11.15
[INFO] [stderr]     Checking informalsystems-pbjson v0.7.0
[INFO] [stderr]     Checking impl-serde v0.4.0
[INFO] [stderr]     Checking ibc-types-identifier v0.15.0
[INFO] [stderr]     Checking erased-serde v0.3.31
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking ibc-types-transfer v0.15.0
[INFO] [stderr]     Checking pbjson v0.7.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.16
[INFO] [stderr]     Checking primitive-types v0.12.2
[INFO] [stderr]     Checking http v1.2.0
[INFO] [stderr]     Checking tokio v1.42.0
[INFO] [stderr]     Checking tendermint-proto v0.40.1
[INFO] [stderr]     Checking ics23 v0.12.0
[INFO] [stderr]     Checking ibc-types-domain-type v0.15.0
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking ark-poly v0.4.2
[INFO] [stderr]     Checking ark-relations v0.4.0
[INFO] [stderr]     Checking headers v0.4.0
[INFO] [stderr]     Checking http-body-util v0.1.2
[INFO] [stderr]     Checking tower-http v0.6.2
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking ark-snark v0.4.0
[INFO] [stderr]     Checking ark-ec v0.4.2
[INFO] [stderr]     Checking ark-crypto-primitives v0.4.0
[INFO] [stderr]     Checking ark-bls12-377 v0.4.0
[INFO] [stderr]     Checking ark-r1cs-std v0.4.0
[INFO] [stderr]     Checking ark-groth16 v0.4.0
[INFO] [stderr]     Checking ark-ed-on-bls12-377 v0.4.0
[INFO] [stderr]     Checking tokio-util v0.7.11
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-rustls v0.26.1
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking h2 v0.4.7
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking hyper v1.5.1
[INFO] [stderr]     Checking hyper-util v0.1.10
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking hyper-timeout v0.5.2
[INFO] [stderr]     Checking axum-server v0.7.1
[INFO] [stderr]     Checking decaf377 v0.10.1
[INFO] [stderr]     Checking tendermint v0.40.1
[INFO] [stderr]     Checking cosmos-sdk-proto v0.26.1
[INFO] [stderr]     Checking tonic v0.12.3
[INFO] [stderr]     Checking axum-extra v0.9.6
[INFO] [stderr]     Checking poseidon-parameters v1.1.0
[INFO] [stderr]     Checking decaf377-rdsa v0.11.0
[INFO] [stderr]     Checking decaf377-fmd v0.82.0-alpha.0
[INFO] [stderr]     Checking poseidon-permutation v1.1.0
[INFO] [stderr]     Checking poseidon377 v1.2.0
[INFO] [stderr]     Checking ibc-types-timestamp v0.15.0
[INFO] [stderr]     Checking tendermint-light-client-verifier v0.40.1
[INFO] [stderr]     Checking ibc-proto v0.51.1
[INFO] [stderr]     Checking ibc-types-core-client v0.15.0
[INFO] [stderr]     Checking ibc-types-core-commitment v0.15.0
[INFO] [stderr]     Checking ibc-types-core-connection v0.15.0
[INFO] [stderr]     Checking ibc-types-core-channel v0.15.0
[INFO] [stderr]     Checking ibc-types-lightclients-tendermint v0.15.0
[INFO] [stderr]     Checking ibc-types-path v0.15.0
[INFO] [stderr]     Checking ibc-types v0.15.0
[INFO] [stderr]     Checking penumbra-sdk-tct v0.82.0-alpha.0
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/render/dot.rs (3 fixes)
[INFO] [stderr]        Fixed src/live/view.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/live/view.rs:218:58
[INFO] [stdout]      |
[INFO] [stdout]  218 |             while let Ok(()) = receive_request.changed().await {
[INFO] [stdout]      |                                --------------------------^^^^^
[INFO] [stdout]      |                                |                         |
[INFO] [stdout]      |                                |                         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]      |                                |                         up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                                `__awaitee` calls a custom destructor
[INFO] [stdout]      |                                `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]  219 |                 let i = *receive_request.borrow();
[INFO] [stdout]      |                          ------------------------
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                          `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  220 |                 let (tree, dot_json_string) = render_from_watch(&tree);
[INFO] [stdout]      |                                               ------------------------
[INFO] [stdout]      |                                               |
[INFO] [stdout]      |                                               this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                                               `#2` will be dropped later as of Edition 2024
[INFO] [stdout]  221 |                 if submit_render.send((i, tree, dot_json_string)).is_err() {
[INFO] [stdout]      |                    ----------------------------------------------
[INFO] [stdout]      |                    |
[INFO] [stdout]      |                    this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                    `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  224 |             }
[INFO] [stdout]      |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/lock_api-0.4.12/src/rwlock.rs:1370:1
[INFO] [stdout]      |
[INFO] [stdout] 1370 | impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> Drop for RwLockReadGuard<'a, R, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sized-chunks-0.6.5/src/sparse_chunk/mod.rs:72:1
[INFO] [stdout]      |
[INFO] [stdout]   72 | impl<A, N: Bits + ChunkLength<A>> Drop for SparseChunk<A, N> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sized-chunks-0.6.5/src/sparse_chunk/mod.rs:72:1
[INFO] [stdout]      |
[INFO] [stdout]   72 | impl<A, N: Bits + ChunkLength<A>> Drop for SparseChunk<A, N> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/live.rs:39:46
[INFO] [stdout]    |
[INFO] [stdout] 39 |         while let Ok(()) = changed.changed().await {
[INFO] [stdout]    |                            ------------------^^^^^
[INFO] [stdout]    |                            |                 |
[INFO] [stdout]    |                            |                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]    |                            |                 up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                            `__awaitee` calls a custom destructor
[INFO] [stdout]    |                            `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 40 |             tree.send_modify(|_| {});
[INFO] [stdout] 41 |         }
[INFO] [stdout]    |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl (for<'a> Fn(&'a mut W) -> Result<(), std::io::Error>) + std::marker::Copy` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/render/dot.rs:748:10
[INFO] [stdout]     |
[INFO] [stdout] 748 |     ) -> impl Fn(&mut W) -> io::Result<()> + Copy {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/render/dot.rs:745:9
[INFO] [stdout]     |
[INFO] [stdout] 745 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/live/view.rs:218:58
[INFO] [stdout]      |
[INFO] [stdout]  218 |             while let Ok(()) = receive_request.changed().await {
[INFO] [stdout]      |                                --------------------------^^^^^
[INFO] [stdout]      |                                |                         |
[INFO] [stdout]      |                                |                         this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]      |                                |                         up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                                `__awaitee` calls a custom destructor
[INFO] [stdout]      |                                `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout]  219 |                 let i = *receive_request.borrow();
[INFO] [stdout]      |                          ------------------------
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                          `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  220 |                 let (tree, dot_json_string) = render_from_watch(&tree);
[INFO] [stdout]      |                                               ------------------------
[INFO] [stdout]      |                                               |
[INFO] [stdout]      |                                               this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                                               `#2` will be dropped later as of Edition 2024
[INFO] [stdout]  221 |                 if submit_render.send((i, tree, dot_json_string)).is_err() {
[INFO] [stdout]      |                    ----------------------------------------------
[INFO] [stdout]      |                    |
[INFO] [stdout]      |                    this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                    `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  224 |             }
[INFO] [stdout]      |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/lock_api-0.4.12/src/rwlock.rs:1370:1
[INFO] [stdout]      |
[INFO] [stdout] 1370 | impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> Drop for RwLockReadGuard<'a, R, T> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sized-chunks-0.6.5/src/sparse_chunk/mod.rs:72:1
[INFO] [stdout]      |
[INFO] [stdout]   72 | impl<A, N: Bits + ChunkLength<A>> Drop for SparseChunk<A, N> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/sized-chunks-0.6.5/src/sparse_chunk/mod.rs:72:1
[INFO] [stdout]      |
[INFO] [stdout]   72 | impl<A, N: Bits + ChunkLength<A>> Drop for SparseChunk<A, N> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/live.rs:39:46
[INFO] [stdout]    |
[INFO] [stdout] 39 |         while let Ok(()) = changed.changed().await {
[INFO] [stdout]    |                            ------------------^^^^^
[INFO] [stdout]    |                            |                 |
[INFO] [stdout]    |                            |                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]    |                            |                 up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                            `__awaitee` calls a custom destructor
[INFO] [stdout]    |                            `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 40 |             tree.send_modify(|_| {});
[INFO] [stdout] 41 |         }
[INFO] [stdout]    |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl (for<'a> Fn(&'a mut W) -> Result<(), std::io::Error>) + std::marker::Copy` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/render/dot.rs:748:10
[INFO] [stdout]     |
[INFO] [stdout] 748 |     ) -> impl Fn(&mut W) -> io::Result<()> + Copy {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/render/dot.rs:745:9
[INFO] [stdout]     |
[INFO] [stdout] 745 |         &self,
[INFO] [stdout]     |         ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/bin/tct-visualize.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/bin/tct-live-edit.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 41s
[INFO] [stderr] crater-edition-check: penumbra-sdk-tct-visualize v0.82.0-alpha.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]    Compiling penumbra-sdk-tct-visualize v0.82.0-alpha.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:542:9
[INFO] [stdout]     |
[INFO] [stdout] 540 |           let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 541 |
[INFO] [stdout] 542 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 543 | |             // Edge specification
[INFO] [stdout] 544 | |             parent_id(w)?;
[INFO] [stdout] 545 | |             write!(w, " -> ")?;
[INFO] [stdout] ...   |
[INFO] [stdout] 568 | |             write!(w, "[color=\"{color}\"]")
[INFO] [stdout] 569 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:540:23
[INFO] [stdout]     |
[INFO] [stdout] 540 |         let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:577:9
[INFO] [stdout]     |
[INFO] [stdout] 575 |           let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 576 |
[INFO] [stdout] 577 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 578 | |             parent_id(w)?;
[INFO] [stdout] 579 | |             write!(w, " -> ")?;
[INFO] [stdout] 580 | |             child_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 591 | |             write!(w, "[color=\"gray\"]")
[INFO] [stdout] 592 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:575:23
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:608:9
[INFO] [stdout]     |
[INFO] [stdout] 606 |           let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 607 |
[INFO] [stdout] 608 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 609 | |             left_id(w)?;
[INFO] [stdout] 610 | |             write!(w, " -> ")?;
[INFO] [stdout] 611 | |             right_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 621 | |             write!(w, "[constraint=false]")
[INFO] [stdout] 622 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:606:23
[INFO] [stdout]     |
[INFO] [stdout] 606 |         let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:630:9
[INFO] [stdout]     |
[INFO] [stdout] 628 |           let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 629 |
[INFO] [stdout] 630 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 631 | |             left_id(w)?;
[INFO] [stdout] 632 | |             write!(w, " -> ")?;
[INFO] [stdout] 633 | |             right_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 643 | |             write!(w, "[constraint=false]")
[INFO] [stdout] 644 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:628:23
[INFO] [stdout]     |
[INFO] [stdout] 628 |         let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:656:13
[INFO] [stdout]     |
[INFO] [stdout] 654 |               let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                             ---- immutable borrow occurs here
[INFO] [stdout] 655 |
[INFO] [stdout] 656 |               self.line(|w| {
[INFO] [stdout]     |               ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _____________|
[INFO] [stdout]     | |
[INFO] [stdout] 657 | |                 parent_id(w)?;
[INFO] [stdout] 658 | |                 write!(w, " -> ")?;
[INFO] [stdout] 659 | |                 child_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 671 | |                 write!(w, "[color=\"{color}\"]")
[INFO] [stdout] 672 | |             })?;
[INFO] [stdout]     | |______________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:654:27
[INFO] [stdout]     |
[INFO] [stdout] 654 |             let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `penumbra-sdk-tct-visualize` (lib test) due to 5 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:542:9
[INFO] [stdout]     |
[INFO] [stdout] 540 |           let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 541 |
[INFO] [stdout] 542 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 543 | |             // Edge specification
[INFO] [stdout] 544 | |             parent_id(w)?;
[INFO] [stdout] 545 | |             write!(w, " -> ")?;
[INFO] [stdout] ...   |
[INFO] [stdout] 568 | |             write!(w, "[color=\"{color}\"]")
[INFO] [stdout] 569 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:540:23
[INFO] [stdout]     |
[INFO] [stdout] 540 |         let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:577:9
[INFO] [stdout]     |
[INFO] [stdout] 575 |           let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 576 |
[INFO] [stdout] 577 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 578 | |             parent_id(w)?;
[INFO] [stdout] 579 | |             write!(w, " -> ")?;
[INFO] [stdout] 580 | |             child_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 591 | |             write!(w, "[color=\"gray\"]")
[INFO] [stdout] 592 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:575:23
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:608:9
[INFO] [stdout]     |
[INFO] [stdout] 606 |           let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 607 |
[INFO] [stdout] 608 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 609 | |             left_id(w)?;
[INFO] [stdout] 610 | |             write!(w, " -> ")?;
[INFO] [stdout] 611 | |             right_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 621 | |             write!(w, "[constraint=false]")
[INFO] [stdout] 622 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:606:23
[INFO] [stdout]     |
[INFO] [stdout] 606 |         let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:630:9
[INFO] [stdout]     |
[INFO] [stdout] 628 |           let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                         ---- immutable borrow occurs here
[INFO] [stdout] 629 |
[INFO] [stdout] 630 |           self.line(|w| {
[INFO] [stdout]     |           ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _________|
[INFO] [stdout]     | |
[INFO] [stdout] 631 | |             left_id(w)?;
[INFO] [stdout] 632 | |             write!(w, " -> ")?;
[INFO] [stdout] 633 | |             right_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 643 | |             write!(w, "[constraint=false]")
[INFO] [stdout] 644 | |         })
[INFO] [stdout]     | |__________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:628:23
[INFO] [stdout]     |
[INFO] [stdout] 628 |         let edge_id = self.edge_name(left_id, right_id);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> src/render/dot.rs:656:13
[INFO] [stdout]     |
[INFO] [stdout] 654 |               let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                             ---- immutable borrow occurs here
[INFO] [stdout] 655 |
[INFO] [stdout] 656 |               self.line(|w| {
[INFO] [stdout]     |               ^    ---- immutable borrow later used by call
[INFO] [stdout]     |  _____________|
[INFO] [stdout]     | |
[INFO] [stdout] 657 | |                 parent_id(w)?;
[INFO] [stdout] 658 | |                 write!(w, " -> ")?;
[INFO] [stdout] 659 | |                 child_id(w)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 671 | |                 write!(w, "[color=\"{color}\"]")
[INFO] [stdout] 672 | |             })?;
[INFO] [stdout]     | |______________^ mutable borrow occurs here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/render/dot.rs:654:27
[INFO] [stdout]     |
[INFO] [stdout] 654 |             let edge_id = self.edge_name(parent_id, child_id);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/render/dot.rs:746:20
[INFO] [stdout]     |
[INFO] [stdout] 746 |         from_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 747 |         to_name: impl Fn(&mut W) -> io::Result<()> + Copy,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 744 ~     fn edge_name<T: Fn(&mut W) -> io::Result<()> + Copy, U: Fn(&mut W) -> io::Result<()> + Copy>(
[INFO] [stdout] 745 |         &self,
[INFO] [stdout] 746 ~         from_name: T,
[INFO] [stdout] 747 ~         to_name: U,
[INFO] [stdout] 748 ~     ) -> impl Fn(&mut W) -> io::Result<()> + Copy + use<W, T, U> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `penumbra-sdk-tct-visualize` (lib) due to 5 previous errors
[INFO] running `Command { std: "docker" "inspect" "355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3", kill_on_drop: false }`
[INFO] [stdout] 355508f260f7d1e630863174e1f1b69d1f93211a7f3f741dd3f1b9a8accbb8e3
